package com.hualude.roadsign.service;

import com.hualude.roadsign.dto.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import java.util.List;

/**
 * Created by anqian on 2017/4/7.
 */
public interface CountService {


    /**
     * @Description: 标牌统计datatables4DT
     * @Author: lin-anqian
     * @Date: 2017/4/7 14:48
     */
    public DTResponseDto getRoadSign4DT(Integer userId, Integer orgId, DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 用于首页的标牌统计
     * @author chenzetong
     * @date 2017/4/7 19:13
     */
    public Integer getRoadSignCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 用于首页的标杆统计
     * @author chenzetong
     * @date 2017/4/8 15:59
     */
    public Integer getRoadPoleCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 窨井统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getCoverCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 限高杆统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getHighLeverCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 护栏统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getGuardrailCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 监控箱统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getMonitorCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 标线统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getRoadLineCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号灯统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getSignalLampCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号机统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getSignalMachineCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 太阳能统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午4:27
     */
    public Integer getSolarEnergyCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 标杆统计datatables 4DT
     * @Author: lin-anqian
     * @Date: 2017/4/8 21:59
     */
    public DTResponseDto getRoadPole4DT(Integer userId, Integer orgId, DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 获取标杆表中的相关的所有道路名 --联动道路名选择框
     * @Author: lin-anqian
     * @Date: 2017/4/9 15:27
     */
    public List<String> getAllRoadName(String provinceName, String cityName, String areaName, Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 获取标杆表中的城市下所有区域名
     * @Author: lin-anqian
     * @Date: 2017/4/9 15:27
     */
    public List<String> getAllAreaName(Integer userId, Integer orgId, String provinceName, String cityName) throws Exception;

    /**
     * @Description: 得到相关的所有主管公司名和ID
     * @Author: lin-anqian
     * @Date: 2017/4/9 15:27
     */
    public List<OrgDto> getAllOrg(Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 故障统计4DT上报表
     * @Author: lin-anqian
     * @Date: 2017/4/10 12:23
     */
    public DTResponseDto getFault4DT(Integer userId, Integer orgId, DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 故障统计4DT处理表
     * @Author: lin-anqian
     * @Date: 2017/4/12 0:28
     */
    public DTResponseDto getMaintenance4DT(Integer userId, Integer orgId, DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 维护单位
     * @Author: lin-anqian
     * @Date: 2017/4/12 22:57
     */
    public List<OrgDto> getDealOrg(Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 获取申报数和处理数和花费
     * @Author: lin-anqian
     * @Date: 2017/4/12 23:22
     */
    public List<DealTalkCountsDto> getDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 用于首页标牌待审核数量
     * @author chenzetong
     * @date 2017/4/16 22:11
     */
    public Integer getUnAuditSingCount(Integer orgId) throws Exception;

    /**
     * @Description: 根据主管单位得到养护公司
     * @Author: lin-anqian
     * @Date: 2017/4/22 21:30
     */
    public List<OrgDto> getConservationOrg(Integer mainOrgId, Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 得到标杆表中的全部省份
     * @Author: lin-anqian
     * @Date: 2017/4/23 19:16
     */
    public List<String> getProvinceName(Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 按照省份得到城市
     * @Author: lin-anqian
     * @Date: 2017/4/23 19:45
     */
    public List<String> getCityName(Integer userId, Integer orgId, String provinceName) throws Exception;

    /**
     * @Description: 获取起始路段
     * @Author: lin-anqian
     * @Date: 2017/4/23 21:48
     */
    public List<String> getStartRoadName(Integer userId, Integer orgId, String provinceName, String cityName,
                                         String areaName, String endRoadName, String roadName) throws Exception;

    /**
     * @Description: 根据起始路段获取终止路段
     * @Author: lin-anqian
     * @Date: 2017/4/23 21:51
     */
    public List<String> getEndRoadName(Integer userId, Integer orgId, String startRoad, String provinceName, String cityName,
                                       String areaName, String roadName) throws Exception;

    /**
     * @Description: 得到某年按标志分类各个标志的数量
     * @Author: lin-anqian
     * @Date: 2017/4/25 18:49
     */
    public List<Integer> getPerSignCounts(Integer userId, Integer orgId, String time, String province, String city, String area, String road) throws Exception;

    /**
     * @Description: 标牌在道路DTO4
     * @Author: lin-anqian
     * @Date: 2017/5/4 23:28
     */
    public DTResponseDto getRoadSignPole4DT(Integer userId, Integer orgId, DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 按区域统计标牌统计
     * @Author: lin-anqian
     * @Date: 2017/5/5 21:44
     */
    public List<NameCountDto> getAreaRoadSignCount(Integer userId, Integer orgId, String roadSignCity) throws Exception;

    /**
     * @Description: 按道路得到按标志分类各个标志的数量
     * @Author: lin-anqian
     * @Date: 2017/5/18 21:02
     */
    public List<Integer> getPerSignCountsByRoad(String province, String city, String area, String orgName, String roadName) throws Exception;

    /**
     * @Description: 得到excel需要的信息
     * @Author: yang_jiaren
     * @Date: 2017/5/18 17:45
     */
    public HSSFWorkbook downSignPoleByExcel(String search, Integer userId, Integer orgId) throws Exception;

    /**
     * @Description: 标牌故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getSignFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 窨井审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getCoverAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 限高杆审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getHighLeverAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 窨井故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getCoverFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 限高杆故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getHighLeverFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 护栏审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getGuardrailAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 护栏故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getGuardrailFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 监控箱审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getMonitorAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 监控箱故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getMonitorFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 标线审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getRoadLineAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 标线故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getRoadLineFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号灯审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getSignalLampAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号灯故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getSignalLampFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号机审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getSignalMachineAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 信号机故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getSignalMachineFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 太阳能审核统计
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午5:15
     */
    public Integer getSolarEnergyAuditCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 太阳能故障统计
     * @Author: shao-yikun
     * @Date: 2017/11/24 下午4:26
     */
    public Integer getSolarEnergyFaultCount(Integer orgId, Integer actorId) throws Exception;

    /**
     * @Description: 获取窨井申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getCoverDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取限高杆申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getHighLeverDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取护栏申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getGuardrailDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取监控箱申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getMonitorDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取标线申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getRoadLineDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取信号灯申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getSignLampDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取信号机申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getSignalMachineDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取太阳能申报数和处理数和花费
     * @Author: shao-yikun
     * @Date: 2017/11/20 下午8:59
     */
    public List<DealTalkCountsDto> getSolarEnergyDealTalkTimes(Integer year, Integer orgId, Integer userId) throws Exception;

    /**
     * @Description: 获取该公司所在地区
     * @author xu_jiaHui
     * @date 2017/12/19 18:50
     */
    public PositionDto getAllInfo4Type(Integer orgId, Integer orgType, Integer EquipmentType, String actorIds) throws Exception;

    /**
     * @Description: 根据搜索信息获取相应模块数量用于DT展示
     * @author xu_jiaHui
     * @date 2017/12/20 12:54
     */
    public DTResponseDto getCount4Type(DTRequestDto dtRequestDto) throws Exception;

    /**
     * @Description: 根据搜索信息获取相应故障信息用于DT展示
     * @author xu_jiaHui
     * @date 2017/12/21 17:18
     */
    public DTResponseDto getFault4Type(DTRequestDto dtRequestDto) throws Exception;
}
